已經常用的一些指令集介紹完畢,接下來就是要如何使用 ARM Cortex-M 進行程式設計。
Cortex-M 系列可以使用arm assembly、C 語言或其他高級語言(Ex: National Instruments LabVIEW)進行程式設計。
ARM Cortex-M 應用程式設計其實與Day.2介紹的程式運行的基本概念(預處理、編譯、組譯、鏈結)非常類似。
而ARM也提供了強大的開發工具鏈 Keil、RVDS、ADS、DS-5、MDK
前面介紹了許多 ARM inter ,今天介紹程式設計常用的技巧 Function Calls。
假設我們在Main call Function 使用到相同的 Register 該由誰 Backup 其實有一套規則。
希望 Register 分成三群
> r0-r3 進行parameters傳遞,因此在寫程式的時候盡量不要超過四個 parameters
,不然需要使用memory就會慢很多。
> 假設原本caller 就有使用 r0-r3 必須由caller backup r0-r3
> 內部callee 需要 Register 使用 r4-r7,因此使用之前由callee backup
>r12-r15 盡量不要使用
由於現代 C 編譯器可以生成非常高效的程式碼,因此最好用 C 進行程式設計,而不是花費大量時間嘗試用assembly開發,後者容易出錯且可移植性較差,當然有些情況下我們必須使用assembly,因此會看到C與assembly的結合。
CMSIS是什麼?基於ARM Cortex處理器的微控制器的獨立於供應商的硬體抽象層
CMSIS還提供了處理器(Cortex M,Cortex A5/A7/A9)和外圍設備,RTOS和中間件組件的interface,他有定義一系列的 Macro,讓我們使用,我們就不用查詢記憶體位置操作對應的特殊 Register
最近有點小忙後續有時間在更新做詳細介紹。
NYCU OCW Lec05 微處理機系統實驗
Introduction to Computer Systems